projects
/
xen.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
836885d
)
x86: Fix fatal page fault when vram dirty logic handles MMIO of passthrough devices.
author
Keir Fraser
<keir.fraser@citrix.com>
Mon, 12 May 2008 09:01:01 +0000
(10:01 +0100)
committer
Keir Fraser
<keir.fraser@citrix.com>
Mon, 12 May 2008 09:01:01 +0000
(10:01 +0100)
Signed-off-by: Qing He <qing.he@intel.com>
xen/arch/x86/mm/shadow/multi.c
patch
|
blob
|
history
diff --git
a/xen/arch/x86/mm/shadow/multi.c
b/xen/arch/x86/mm/shadow/multi.c
index f9f88d6ad4e43e6d36c32955b5d3e838fc013f3d..d8fdf1c8168da65b32d97369557935d30664cee9 100644
(file)
--- a/
xen/arch/x86/mm/shadow/multi.c
+++ b/
xen/arch/x86/mm/shadow/multi.c
@@
-1268,6
+1268,9
@@
static inline void shadow_vram_get_l1e(shadow_l1e_t new_sl1e,
if ( !d->dirty_vram ) return;
mfn = shadow_l1e_get_mfn(new_sl1e);
+
+ if ( !mfn_valid(mfn) ) return; /* m2p for mmio_direct may not exist */
+
gfn = mfn_to_gfn(d, mfn);
if ( (gfn >= d->dirty_vram->begin_pfn) && (gfn < d->dirty_vram->end_pfn) ) {
@@
-1293,6
+1296,9
@@
static inline void shadow_vram_put_l1e(shadow_l1e_t old_sl1e,
if ( !d->dirty_vram ) return;
mfn = shadow_l1e_get_mfn(old_sl1e);
+
+ if ( !mfn_valid(mfn) ) return;
+
gfn = mfn_to_gfn(d, mfn);
if ( (gfn >= d->dirty_vram->begin_pfn) && (gfn < d->dirty_vram->end_pfn) ) {